// todos模块
const todos = {
  // 开启命名空间，这样模块内的getter、mutation和action的名字
  // 都会自动根据模块注册的路径调整命名
  namespaced: true,
  
  // 模块的状态
  state: {
    test: '1',
  },
  
  // 模块的getters，类似于计算属性
  getters: {
    // 获取过滤后的待办事项
    filteredTodos: (state) => {
      switch(state.filter) {
        case 'active':
          return state.list.filter(todo => !todo.completed)
        case 'completed':
          return state.list.filter(todo => todo.completed)
        default:
          return state.list
      }
    },
    
    // 统计未完成的任务数量
    activeTodosCount: (state) => {
      return state.list.filter(todo => !todo.completed).length
    },
    
    // 获取当前过滤器的值
    currentFilter: (state) => state.filter
  },
  
  // 模块的mutations，用于修改状态
  // mutations必须是同步函数
  mutations: {
    updateTest(state, text) {
      console.log('updateTest');
      state.test = text
    },
  },
  
  // 模块的actions，用于处理异步操作
  // actions可以包含异步操作
  actions: {
    aUpdateTest({ commit }, text) {
      console.log('aUpdateTest');
      commit('updateTest', text)
    }
  }
}

export default todos